package com.stx.liuchang;

abstract class AIAssistant {
    // 私有属性 - 封装数据
    private String id;
    private String name;
    private String type;
    private String version;
    private boolean online;
    private int score; // 能力评分(0-100)

    // 构造方法
    public AIAssistant(String id, String name, String type, String version, boolean online, int score) {
        this.setId(id);
        this.setName(name);
        this.setType(type);
        this.setVersion(version);
        this.setOnline(online);
        this.setScore(score);
    }

    // 抽象方法 - 执行任务
    public abstract void performTask(String task);

    // 获取助手状态字符串
    public String getStatusString() {
        return isOnline() ? "🟢在线" : "🔴离线";
    }

    // 获取助手详细信息
    public String getDetails() {
        return String.format("ID: %s, 名称: %s, 类型: %s, 版本: %s, 状态: %s, 能力评分: %d [%s]",
                getId(), getName(), getType(), getVersion(), getStatusString(), getScore(), getType());
    }

    // 获取简化信息
    public String getSimpleInfo() {
        return String.format("ID: %s, 名称: %s, 类型: %s, 版本: %s, 状态: %s, 能力评分: %d",
                getId(), getName(), getType(), getVersion(), getStatusString(), getScore());
    }

    // Getter和Setter方法 - 封装的核心
    public String getId() { return id; }
    public void setId(String id) {
        if (id != null && !id.trim().isEmpty()) {
            this.id = id;
        } else {
            System.out.println("❌ ID不能为空");
        }
    }

    public String getName() { return name; }
    public void setName(String name) {
        if (name != null && !name.trim().isEmpty()) {
            this.name = name;
        } else {
            System.out.println("❌ 名称不能为空");
        }
    }

    public String getType() { return type; }
    public void setType(String type) {
        if (type != null && !type.trim().isEmpty()) {
            this.type = type;
        } else {
            System.out.println("❌ 类型不能为空");
        }
    }

    public String getVersion() { return version; }
    public void setVersion(String version) {
        if (version != null && !version.trim().isEmpty()) {
            this.version = version;
        } else {
            System.out.println("❌ 版本号不能为空");
        }
    }

    public boolean isOnline() { return online; }
    public void setOnline(boolean online) { this.online = online; }

    public int getScore() { return score; }
    public void setScore(int score) {
        if (score >= 0 && score <= 100) {
            this.score = score;
        } else {
            System.out.println("❌ 能力评分必须在0-100之间");
        }
    }
}
